#include "my_scheduler.h"

static scheduler_task_t tasks[] = {
    //{key_proc, 50, 0},
   //{toggle_led_proc, 200, 0},
    //{PWM_proc, 50, 0},
    //{encoder_proc,5,0},
    //{speed_PID_proc,10,0},
    {lcd_proc,5,0},
    {lcd_refresh_task,5,0},
    //{GW_proc,10,0},
    {buzzer_close_proc,200,0}
    //{oled_proc,50,0},
    //{MPU6050_proc,5,0}
};

uint16_t task_count = sizeof(tasks) / sizeof(tasks[0]);

// 定义一个函数，用于运行调度器
void scheduler_run(void) {
    // 获取当前时间
    uint32_t now = get_tick();
    // 遍历任务列表
    for (uint16_t i = 0; i < task_count; i++) {
        // 如果当前时间大于等于任务的上次运行时间加上任务的运行间隔
        if (now >= tasks[i].rate_ms + tasks[i].last_run) {
            // 更新任务的上次运行时间
            tasks[i].last_run = now; 
            // 执行任务的函数
            tasks[i].task_func();
        }
    }
}

